home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World Tours: Brazil
/
WorldTours: Brazil.iso
/
pc
/
content
/
main.dir
/
00119_Script_CastMemberFactory
< prev
next >
Wrap
Text File
|
2007-04-22
|
2KB
|
80 lines
--------------------------------------------------------------------------------------------------------------
-- CastMemberFactory
-- v. 0.1.0
-- last upated 27/5/2
-- Simple utility object to manage the creation and destruction of cast members at run-time.
-- Why use this script rather than new(#memberType) lingo?
--------------------------------------------------------------------------------------------------------------
property myMembers, myNextSlot, myCastlib
--------------------------------------------------------------------------------------------------------------
-- PUBLIC
--------------------------------------------------------------------------------------------------------------
on mInit (me)
myMembers = [:]
myCastlib = 1
repeat with i = 1 to the number of castlibs
if castlib(i).name = "temp" then myCastlib = i
end repeat
myNextSlot = (the number of members of castlib myCastlib) + 1
end
on mDestroy (me)
if the runMode = "Author" then
put "Erasing temp members"
repeat with aMemRef in myMembers
if aMemRef.type <> #Empty then erase aMemRef
else put "Error deleting " & aMemRef
end repeat
end if
myMembers.deleteAll()
end
on mCreate (me, id, aMemberType)
if voidP(myMembers) then me.mInit()
aMemRef = myMembers[id]
if voidP(aMemRef) then
aMemRef = new(aMemberType, member myNextSlot of castlib myCastlib )
myMembers[id] = aMemRef
myNextSlot = myNextSlot + 1
end if
return myMembers[id]
end
on mErase (me, aMemRef)
if aMemRef.ilk <> #Member then
aMemRef = myMembers.getAProp(aMemRef)
if voidP(aMemRef) then
return #Error
end if
end if
if aMemRef.type <> #Empty then erase aMemRef
myMembers.deleteOne(aMemRef)
put myMembers
end
--------------------------------------------------------------------------------------------------------------
-- PRIVATE
--------------------------------------------------------------------------------------------------------------
on debug_showStatus (me)
msg = return
msg = msg & me.script & return & "myMembers: " & myMembers
put msg
end